#include <iostream>
#include "Comm.hpp"

int main()
{
    //1.创建key
    key_t k = ::ftok(gpath.c_str(), gprojId);
    if(k < 0)
    {
        std::cout<< "ftok error" <<std::endl;
        return 1;
    }
    std::cout<< "k: "<< k <<std::endl;
    //2.创建共享内存 && 获取
    int shmid = ::shmget(k, gshmsize, IPC_CREAT | IPC_EXCL | gmode);
    if(shmid < 0)
    {
        std::cerr << "shmget error" << std::endl;
        return 2;
    }
    std::cout<< " shmid: "<< shmid <<std::endl;

    sleep(5);

    //3. 共享内存挂接到自己的地址空间中
    // shmat(shmid, nullptr, 0);// 为什么会失败？？？
    // std::cout<< "attach done" << std::endl;
    void* ret = shmat(shmid, nullptr, 0);// 为什么会失败？？？
    std::cout<< "attach done" << (long long)ret << std::endl;//void*在该Ubantu下为64位，8字节，需强转

    sleep(5); 

    //3.删除共享内存
    shmctl(shmid, IPC_RMID, nullptr);

    return 0;
}